コンピュート能力(CC)は、 仮想アーキテクチャ (PTX)と 実アーキテクチャ (SASS/バイナリ)の間をつなぐバージョン管理のブリッジとして機能します。開発者は nvcc を用いて、デスクトップ/サーバー向けプラットフォームから組み込みプラットフォームまで、さまざまなターゲットに設定します。対応するオペレーティングシステムモデルとしては Linux 64ビット(LP64) または Windows 64ビット(LLP64)があります。
1. 仮想アーキテクチャと実アーキテクチャ
CUDAツールキットは、最新の2つの主要なバージョンのGPUアーキテクチャをサポートしています。その内容は 表29:コンピュート能力による機能サポート(7.5~12.x)に記載されています。マッピングは、以下のようなフラグを使用して定義されます: nvcc --generate-code arch=compute_80,code=sm_90 prog.cu。将来のターゲット向けには、 nvcc -arch=sm_100 や特殊なバリエーションである nvcc -arch=sm_100a が使用されます。
2. マクロ階層
コンパイラは __CUDA_ARCH__ を使ってコードの分岐を行います。 マクロ __CUDA_ARCH__ は、デバイスコード(例: )のみで定義されます。 __device__、 __global__)でのみ有効です。より細かい制御は __CUDA_ARCH_SPECIFIC__ および __CUDA_ARCH_FAMILY_SPECIFIC__によって提供されます。特定の機能(例: 分散共有メモリ または特定の NaNペイロード)は、 コンピュート能力9.0以上 または コンピュート能力10.0以降があります。
3. 数値の限界と制約
精度はコンピュート能力(CC)によって異なります。たとえば、サブノーマル処理により $2^{-16382} \approx 3.36 \cdot 10^{-4932}$ が保証されます。ターゲットとなるCCバージョンに基づいて厳格に適用されるハードウェア制限として CUDA_DEVICE_MAX_COPY_CONNECTIONS=16 や .maxnreg PTXディレクティブ が存在します。